/* 
类类型: 实现接口
1. 一个类可以实现多个接口  多个接口是为了限制实例化对象
2. 一个接口可以继承多个接口   扩展功能*/

// 接口限定类  本质是在限定这个类实例化的对象
// 类实现了某个接口，那么这个类的实例化对象内部一定有这个接口当中方法
// 类没有实现某个接口，不代表类的实例化对象内部没有这个接口的方法



// 1、类是用来实例化对象的
// 2、我要求这个实例化出来的对象必须有一个吃的方法
// 


// 定义接口
(function(){
  interface Ieat {
    eat():void
  }

  interface Ispeak{
    speak():void
  }

  interface Isleep{
    sleep():void
  }

  interface Iperson extends Ieat,Isleep,Ispeak {
    study():void
  }
  
  
  class Person implements Iperson{
    name:string
    age:number
    constructor(name,age){
      this.name = name
      this.age = age
    }
    run(){
      console.log('跑');
    }
    eat(){
      console.log('吃饭');
    }
    speak(): void {
      console.log('说话');
    }
    sleep(): void {
      console.log('睡觉');
    }
    study(): void {
      console.log('学习');
    }
  }

  class Dog implements Ieat,Isleep{
    name:string
    age:number
    constructor(name,age){
      this.name = name
      this.age = age
    }
    run(){
      console.log('跑');
    }
    eat(){
      console.log();
    }
    sleep(): void {
      console.log('睡觉');
      
    }
  }

  


  // 在函数内部把所有能吃的对象，全部打印
 




  let p1 = new Person('赵丽颖',35)


})()






